package DAO;

import Bean.*;
import DataBase.TransacionException;
import java.sql.SQLException;
import java.util.ArrayList;
import java.util.List;

public class DAOAlumno extends  AbstractDAO<Alumno>{

 
    @Override
    public void borrar(String condicion) throws TransacionException {
        String sql = "delete from alumno where idAlumno= ? ";
        try{
            this.adminConsulta.iniciar();
            List<Object> params = new ArrayList();
            params.add(condicion);
            this.adminConsulta.doUpdate(sql, params);
            this.adminConsulta.finalizar();
        }catch (SQLException ex) {
            adminConsulta.rollBack();
        }
    }

       

    @Override
    public void insertar(Alumno alumno) throws TransacionException {
        String sql = "insert into alumno(idPersona,semestre,matricula, licenciatura)values(?,?,?,?);";
        try {
            this.adminConsulta.iniciar();
            List<Object> params = new ArrayList();
            params.add(alumno.getIdPersona());
            params.add(alumno.getSemestre());
            params.add(alumno.getMatricula());
            params.add(alumno.getLicienciatura());
            adminConsulta.doUpdate(sql, params);
            this.adminConsulta.finalizar();
        } catch (SQLException ex) {
            adminConsulta.rollBack();
        }
    }

    @Override
    public void actualizar(Alumno alumno, String condicion) throws TransacionException {
       String sql = "update alumno set idPersona=?,semestre=?,matricula=?, licenciatura=? where idAlumno = ?";
        try{
            this.adminConsulta.iniciar();
            List<Object> params = new ArrayList();
            params.add(alumno.getIdPersona());
            params.add(alumno.getSemestre());
            params.add(alumno.getMatricula());
            params.add(alumno.getLicienciatura());
            params.add(condicion);
            adminConsulta.doUpdate(sql, params);
            this.adminConsulta.finalizar();
        }catch(SQLException ex){
            adminConsulta.rollBack();
        }
    }

    @Override
    public List<Alumno> buscar(String condicion, List<Object> params) {
           List<Alumno> result=null;
         String sql = "select * from alumno "+condicion;
         pstmt= adminConsulta.prepareTheStatementForQuery(sql, params);
        result = adminConsulta.ejecutarSeleccion(pstmt, Alumno.class);
        return result;
    }
    
     public List<Alumno> getAlumnoByMatricula(String matricula){
        String condicion = "where matricula = ?";
        List<Object> params = new ArrayList();
        params.add(matricula);
        return buscar(condicion,params);
    }
     public List<Alumno> getAlumnoById(String id){
        String condicion = "where idAlumno = ?";
        List<Object> params = new ArrayList();
        params.add(id);
        return buscar(condicion,params);
    }

    public List<Alumno> getAlumnoByPersona(String idPersona){
        String condicion = "where idPersona = ?";
        List<Object> params = new ArrayList();
        params.add(idPersona);
        return buscar(condicion, params);
    }

}
